"""
File: example_1.py
Project: 1_重庆明信片
File Created: 2020/02/10 18:50:01
Author: Dunmore (fovd2020@outlook.com)
-----
Description:
1.1.2 提高部分 练习1
用重庆风景名胜的名称生成带遮罩的词云
-----
"""
import os
import jieba
import numpy as np
from PIL import Image
from wordcloud import WordCloud

# 获取此文件的绝对路径
current_dir = (
    os.path.dirname(__file__) if "__file__" in locals() else os.getcwd()
)

# 读取文件中的重庆景点，如果是已经整理过的列表可以无须结巴分词，直接传递给wordcloud生成词云
wc_text = open(
    os.path.join(current_dir, "重庆景点.txt"), "r", encoding="utf-8"
).read()

# 如果是不规则的数据，用结巴分词之后再传递给wordcloud生成词云
# seg_list = jieba.cut(text)
# wc_text = "".join(seg_list)

# 指定遮罩图片
cq_mask = np.array(Image.open(os.path.join(current_dir, "遮罩图片.jpg")))

# 指定字体路径，用于wordcloud正常显示中文
# 可能不支持含有中文的路径，所以直接指向了系统目录中的宋体
font_path = r"c:\windows\fonts\simsun.ttc"

# 创建WordCloud实例，指定字体、背景颜色、遮罩图像
word_cloud = WordCloud(
    font_path=font_path, background_color="white", mask=cq_mask
)

# 生成词云
word_cloud.generate(wc_text)
# 生成图片文件
# word_cloud.to_file("t.png")

# 展示词云图片
image = word_cloud.to_image()
image.show()
